[comment {-*- tcl -*- doctools manpage}]
[manpage_begin zmq n 4.0.1]
[copyright {Jos Decoster <jos.decoster@gmail.com>}]
[moddesc {A Tcl wrapper for the ZeroMQ messaging library}]
[category  {Messaging}]
[keywords {messaging}]
[keywords {inter process communication}]
[keywords {RPC}]
[keywords {message queue}]
[keywords {queue}]
[keywords {broadcast}]
[keywords {communication}]
[keywords {producer - consumer}]
[keywords {publish - subscribe}]
[titledesc {Zmq Package Reference}]
[require Tcl 8.5]
[require zmq [opt 4.0.1]]
[description]

The [term zmq] package is a wrapper for the ZeroMQ library. ZeroMQ can be found
at [uri http://www.zeromq.org].

[para]

The wrapper is based on version 4.0.1 of the ZeroMQ library. The package is
written using [term critcl] 3.

[para]

Use this documentation in combination with the ZeroMQ documentation for more
details.

[para]

All sockets in this documentation refer to ZeroMQ sockets.

[para]

The ZeroMQ API use [term set] and [term get] functions to set or get context,
socket and message options. This wrapper provides [term set] and [term get]
methods for contexts, sockets and message for compatibility with the ZeroMQ API
but also provides the more Tcl style [term cget] and [term configure] methods.

[para]

The ZeroMQ API uses [term destroy] for contexts and [term close] for sockets and
messages. This wrapper provides the same methods for compatibility with the
ZeroMQ API but also provides a [term destroy] method for sockets and messages.


[include zmq_context.inc]
[include zmq_socket.inc]
[include zmq_message.inc]
[include zmq_multipart.inc]
[include zmq_polling.inc]
[include zmq_device.inc]
[include zmq_misc.inc]
[include zmq_examples.inc]

[section "Bugs, ideas, feedback"]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such at the [uri {https://github.com/jdc8/tclzmq/issues} {Github tracker}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[section "License"]

[term zmq] uses different licenses for different parts of the code.

The 'core' of [term zmq] (located in [term zmq.tcl]) is licensed under
LGPLv3. This just means that if you make any changes to how that code works, you
must release those changes under the LGPL. If you just use [term zmq], then you
can use any license you want for your own code. Check [term COPYING.LESSER] for
more info.
[para]
The restrictions imposed by the LGPL make no sense for the 'non-core'
functionality in [term zmq] (derivative code must also be LGPL or GPL),
especially for examples, so all 'non-core' code is relicensed under the more
permissive BSD license (specifically Modified BSD aka New BSD aka 3-clause BSD), where
possible. This means that you can copy this code and build your own apps without
needing to license your own code with the LGPL or GPL. Check [term COPYING.BSD]
for more info.

[manpage_end]
